package com.api;

import com.activity.bean.AttanceRecordBean;
import com.activity.bean.CategoryBean;
import com.activity.bean.ClassBean;
import com.activity.bean.ClassSpan;
import com.activity.bean.DateBean;
import com.activity.bean.EmployerBean;
import com.activity.bean.TagBean;
import com.activity.bean.UserBean;
import com.api.param.ClassParam;
import com.api.response.ArrayListResponse;
import com.api.response.BaseResponse;
import com.api.response.OpusResponse;
import com.api.response.OssResponse;
import com.api.response.RemarkResponse;
import com.api.response.StringResponse;
import com.api.response.TodayResponse;
import com.api.response.UserResponse;

import java.util.Map;

import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;

public interface StoreApi {


    /**
     * 获取验证码
     * @param param
     * @return
     */


    @FormUrlEncoded
    @POST("getattendancegrouplist")
    Observable<ArrayListResponse<ClassBean>> getGroups(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getattendancegroupinfo")
    Observable<ArrayListResponse<ClassBean>> getGroupinfo(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getstorememberlist")
    Observable<ArrayListResponse<EmployerBean>> getMmember(@FieldMap Map<String, String> param);

    //25.获取考勤班次列表
    @FormUrlEncoded
    @POST("getattendancetimespanlist")
    Observable<ArrayListResponse<ClassSpan>> getClass(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("addattendancetimespan")
    Observable<StringResponse> addClass(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("deleteattendancetimespan")
    Observable<StringResponse> deleteClass(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("updateattendancetimespan")
    Observable<StringResponse> updateClass(@FieldMap Map<String, String> param);


    @FormUrlEncoded
    @POST("addattendancegroup")
    Observable<StringResponse> addGroup(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("updateattendancegroup")
    Observable<StringResponse> updateGroup(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("deleteattendancegroup")
    Observable<StringResponse> deleteGroup(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getcurrentmonthcheckinlist")
    Observable<ArrayListResponse<AttanceRecordBean>> getMonthRecord(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getcheckinlist")
    Observable<ArrayListResponse<AttanceRecordBean>> getMonthPageRecord(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("updateuserremind")
    Observable<UserResponse> clockSet(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("updateattendancegrouptimerange")
    Observable<ArrayListResponse<ClassBean>> clockSetRange(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("gettodaycheckinrecordlist")
    Observable<TodayResponse> getTodayCheck(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("checkin2")
    Observable<StringResponse> sign2(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("checkin")
    Observable<StringResponse> sign(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("gettaglistbyrank")
    Observable<ArrayListResponse<TagBean>> getTags(@FieldMap Map<String, String> param);


    @FormUrlEncoded
    @POST("getcheckindatelist")
    Observable<ArrayListResponse<DateBean>> getDate(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getcheckindatelist_out")
    Observable<ArrayListResponse<DateBean>> getDateOut(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getcheckindatelist_ot")
    Observable<ArrayListResponse<DateBean>> getcheckindatelist_ot(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getcheckinuserlistbydate")
    Observable<ArrayListResponse<AttanceRecordBean>> getDateRecord(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getcheckinuserlistbydate_out")
    Observable<ArrayListResponse<AttanceRecordBean>> getDateRecordOut(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getcheckinuserlistbydate_ot")
    Observable<ArrayListResponse<AttanceRecordBean>> getcheckinuserlistbydate_ot(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getcheckinuserlist")
    Observable<ArrayListResponse<UserBean>> getCheckMember(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getcheckinuserlist_out")
    Observable<ArrayListResponse<UserBean>> getCheckMemberOut(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getcheckinuserlist_ot")
    Observable<ArrayListResponse<UserBean>> getcheckinuserlist_ot(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getusercheckinbyuseranddatespan")
    Observable<ArrayListResponse<AttanceRecordBean>> getMemberRecord(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getusercheckinbyuseranddatespan_out")
    Observable<ArrayListResponse<AttanceRecordBean>> getMemberRecordOut(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("getusercheckinbyuseranddatespan_ot")
    Observable<ArrayListResponse<AttanceRecordBean>> getusercheckinbyuseranddatespan_ot (@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getworkscategorylist")
    Observable<ArrayListResponse<CategoryBean>> getCategory(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("getworkssubcategorylist")
    Observable<ArrayListResponse<CategoryBean>> getSubCategory(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("updateworkscategory")
    Observable<StringResponse> updateCategory(@FieldMap Map<String, String> param);
    @FormUrlEncoded
    @POST("deleteworkscategory")
    Observable<StringResponse> deleteCategory(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("addworkscategory")
    Observable<StringResponse> addCategory(@FieldMap Map<String, String> param);


    @FormUrlEncoded
    @POST("addattendancesign")
    Observable<StringResponse> addattendanceSign(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("batchupdateworkscategoryorder")
    Observable<ArrayListResponse<CategoryBean>> sortCategory(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("outgoingsign")
    Observable<StringResponse> outgoingsign(@FieldMap Map<String, String> param);

    @FormUrlEncoded
    @POST("otsign")
    Observable<StringResponse> otsign(@FieldMap Map<String, String> param);
}
